import cv2
import pyvirtualcam

# 设置 MP4 文件路径
video_path = r"C:\Users\happy\Desktop\鞋子视频\1\1.mp4"  # 替换为你的 MP4 文件路径

# 打开视频文件
cap = cv2.VideoCapture(video_path)

# 检查视频文件是否成功打开
if not cap.isOpened():
    print("无法打开视频文件！")
    exit()

# 获取视频分辨率和帧率
video_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
video_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
video_fps = int(cap.get(cv2.CAP_PROP_FPS))

# 初始化虚拟摄像头
with pyvirtualcam.Camera(width=video_width, height=video_height, fps=video_fps) as cam:
    print(f"正在使用虚拟摄像头: {cam.device}")

    while True:
        # 读取视频帧
        ret, frame = cap.read()
        if not ret:
            print("视频播放结束，重新开始播放")
            cap.set(cv2.CAP_PROP_POS_FRAMES, 0)  # 重置帧位置到开头
            continue  # 跳过当前循环，重新读取帧

        # 将帧从 BGR 转换为 RGB（虚拟摄像头需要 RGB 格式）
        frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        # 将帧发送到虚拟摄像头
        cam.send(frame_rgb)

        # 等待下一帧
        cam.sleep_until_next_frame()

# 释放视频资源
cap.release()

